﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RepositoryFramework
{
	/// <summary>
	/// Interface <see cref="IUnitOfWorkProvider"/> declare unit of work provider
	/// </summary>
	public interface IUnitOfWorkProvider<T> : IDisposable where T : IUnitOfWork
	{
		/// <summary>
		/// Gets the readonly unit of work.
		/// </summary>
		/// <returns></returns>
		T GetReadOnly();

		/// <summary>
		/// Gets the transactional unit of work.
		/// </summary>
		/// <returns></returns>
		T GetTransactional();
	}
}
